package main

//import "fmt"

//func selectUse(v string){
//	//这select语句很像switch，但它的判断条件是基于通信，而不是基于值的等量匹配。
//	select {
//	case v := <-ch1;
//		fmt.Println("channel 1 sends",v)
//	case v := <-ch2;
//		fmt.Println("hannel 2 2sends",v)
//	default://optional
//		fmt.Println("neither channel was ready")
//	}
//}


//非并发  它让一些并发运算更容易表达。
//func Compose(f, g func(x float) float)
//func(x float) float {
//	return func(x float) float {
//		return f(g(x))
//	}
//}
//
//print(Compose(sin, cos)(0.5))



//启动后台程序
// 使用闭包封装一个后台操作。下面是从输入通道拷贝数据到输出通道。
//go func() { // copy input to output
//	for val := range input {
//		output <- val
//	}
//}()
//这个for range操作会一直执行到处理掉通道内最后一个值。

